热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

结尾|尺寸_元素查询:未来的响应式设计

篇首语:本文由编程笔记#小编为大家整理,主要介绍了元素查询:未来的响应式设计相关的知识,希望对你有一定的参考价值。原文链接&#

篇首语:本文由编程笔记#小编为大家整理,主要介绍了元素查询:未来的响应式设计相关的知识,希望对你有一定的参考价值。




原文链接:https://webdesign.tutsplus.com/tutorials/element-queries-the-future-of-responsive-web-design–cms-26945


媒体查询是现代网页设计的重要组成部分,但他并不总是完美的。在这篇文章中,我们将看看许多人一直在争论的关于响应网页设计的未来 “元素查询” 的理念 。


前言

Ethan关于响应式设计 的文章的出现, 改变了我们建立网站的思维方式。受到他的文章的启发, 设计师和开发人员迅速采用了这种方式。如 “移动第一”,“桌面第一” 和 “ 设备不可知论者 ” 纷纷涌现, 出现了新的 设计模式 ,新的标准,类似如 元素 的出现,现在我们有了数不清的开发框架,使得自适应网站开发更加容易。

我们不再为一个特定的屏幕尺寸,或者浏览器,或设备而建立单独的网站。相反,我们建立一个网站,使他们在任何设备,任何屏幕尺寸上都能完美展示。提醒一下,我们用 “媒体查询” 的时候,千万不要 忘了 meta 标签。


媒体查询

媒体查询的目的是使我们能够创建样式模板,适应各种特定的环境。最常见的媒体查询方式是随着视口宽度的改变,改动样式,来适应不同的设备环境。例如下面的代码,当网站窗口最大宽度是 720 像素的时候,隐藏侧边栏。

.site-sidebar
display: flex;
flex: 1 1 320px;

@media ( max-width: 720px )
.site-sidebar
display: none;

媒体查询,随着设备的演变,有几个附加功能,如 屏幕旋转和分辨率 。下面的例子展示了我们如何让一张大的图片在高分辨率的显示器中显示。

.site-logo a
display: inline-block;
background: url( images/logo.png ) no-repeat;

@media screen and ( min-resolution: 2dppx )
background: url( images/logo@2x.png );

在响应式方面,媒体查询已经成为一个主流。通过阅读这些文章, 教程, 和我们以前在Tuts+的帖子,来学习如何使用媒体查询。链接如下:

html 和 CSS
A “Readability First” Approach to Media Queries and Layout
Kezz Bracey

Sass
Simplify Your Media Queries with Sass “Breakpoint”
Joren Van Hee

自适应网页设计
Quick Tip: Spare a Thought for Vertical Break Points
Ian Yates


转折

实际上,媒体查询在各种各样的响应网页设计上也不一定就是高招。当然,可能从来也不算。

如今,市场上各种尺寸和特性的大范围出现,模糊了 “移动” 和 “桌面” 之间的界限(听起来像是 “混合笔记本电脑”)。出于这个原因,维护网站的美观,拥有良好的用户体验和性能也更为艰难。


2015 年在 Google IO, 谷歌允许开发人员检查他们的网站超过 100 种不同的设备上

一旦你添加诸如广告,表格和旧内容的东西混进去,情况可能会更糟糕。很快你就会遇到媒体查询的 “不那么好” 的一面。


媒体查询:“不那么好”

考虑下面的例子。我们有一个UI 组件,显示我们的团队成员的个人资料。我们想在我们的网站上几个不同的地方使用这个组件。例子中显示了UI 是如何在780px 视口的宽度中布局的 。

在 “个人简介” 页面中,我们把头像放在左边,用户名和一段文字的介绍放在右边。


个人简介页展示

在我们的网站上的 “团队” 页面, 用户头像现在放置在顶部, 和用户名以及个人介绍放在下面。字体大小相对要小一点。


团队页面的个人简介

这种情况可以固定媒体查询。比如,我们可以这样写 CSS,如下:

/**
* Profile
*/

.team-profile
text-align: center;

.team-profile .bio
margin-top: 20px;
font-size: 14px;

@media ( min-width: 480px )
.team-profile
text-align: left;
display: flex;

.team-profile .avatar
flex: 0 0 120px;

.team-profile .bio
font-size: 16px;
flex: 0 1 580x;

/**
* Profile card.
*/

.team-profile-card
text-align: center;

.team-profile-card .bio
margin-top: 20px;
font-size: 14px;

/**
* Probably, some overrides
*/

.page .team-profile-card ...

这是可以解决的, 只要我们使用一些额外的类:.user-profile.user-profile-card

然而, 它也违背了 UI 可重用的原则,UI 无论放置在网站的任何地方, 都能适应变化。

在这个例子中,我们希望我们的组件能包装在一个小容器中,而不是当它在浏览器窗口中挤不下的时候,去适应的布局。因此,与其依赖于浏览器窗口大小转移布局,我们为什么不在元素中实现呢呢?


元素(容器)查询

元素查询的想法最初提出是在 2012 年,在自适应网页设计成为了主流方法之后的几年。不幸的是,当时可能没有多少有说服力的理由来提出这件事,世界上的 Web 标准仍然在缓慢的前行。

web社区已经开始行动。RICG(响应式问题的社区组织) , 类似于 元素添加到问题列表的组织, 同时,开发者开发一个类似 EQCSSJavascript库实现这个功能。

原文:Web communities began initiatives on their own. RICG (Responsive Issue Community Group), the same group that initiated the element, eventually added element queries into their issue list while other developers developed a Javascript library, like EQCSS, to emulate this functionality.

除了从依赖浏览器视口宽度,改成了依赖于元素尺寸外,元素查询的工作方式和媒体查询几乎是一样的。这使我们能够构建具有DRY-ER 的真正模块化的 UI 系统。还是相同的例子,我们 用 EQCSS UI 组件重写,具体如下:

.team-profile
text-align: center;

.team-profile .bio
margin-top: 20px;
font-size: 14px;

@element ".team-profile" and ( min-width: 480px )
.team-profile
display: flex;

.team-profile .avatar
flex: 1 1 120px;

.team-profile .bio
text-align: left;
font-size: 16px;
flex: 1 1 580x;

在这里,我们不关心视口的宽度是什么。你可以看到上面,只要该用户界面被拉伸到 480px 或更宽,我们就在边上显示 .avatar.bio 。当UI宽度逐渐缩小到 480px以下的时候, 我们就让 .avatar.bio 和内容对齐到中心。


结尾

澄清一下,我不是说使用媒体查询是不好的。媒体查询是极好的,今天建造的许多网站已经证明了这一点。媒体查询和元素查询是可以并存的。而且有很多的地方使用元素查询会比使用媒体查询的设计方案更有意义。

不幸的是,元素查询如果成为一个 Web 标准仍然有很长的路要走; 我们将希望寄托在 RICG的所有善良的人。

在我们等待的同时,我们可以通过一个 Javascript 库如EQCSS挖掘元素查询的潜力。而这正是我们要在接下来的教程要做的。敬请关注!


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
author-avatar
吴慈瑋宗杰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有